package main

import "fmt"

// 像是一个传送带或者队列  遵循先入先出的规则  保证数据的收发顺序
//声明channel 的时候需要指定元素类型
//goroutine 视为程序并发的执行体，channel 就是其间的连接。 让一个goroutine 的执行发送特定信号到另一个goroutine

func main() {
	var ch = make(chan int, 5) // 创建可以储存5个int类型数据的管道
	//	向channel 写入数据
	ch <- 10
	ch <- 20
	// 读数据
	v1 := <-ch
	fmt.Println(v1)
	//	关闭channel, 当通道被关闭该通道发送值会引发panic，从该通道里接收的值一直都是类型零值
	close(ch)
	for val := range ch { // 判断是否关闭通道
		fmt.Println(val)
	}
}
